<?php
declare(strict_types=1);

namespace Zms\Validate;

/**
 * @describe 验证器
 * @user zlf <zms-pro@qq.com> 2025/3/25
 * @param string|array $rules 验证规则
 * @param array $data 要验证的数据
 * @param array $label 获取验证的label
 * @param string $scene 验证场景
 * @return array|string 返回array时为通过 返回字符串为错误信息
 */
function validate($rules, $data, $label = [], $scene = '')
{
    /**
     * @var ValidateAbstract $validate
     */
    if (is_string($rules)) {
        $validate = new $rules();
    } else {
        $validate = new Validate();
        $validate->setRules($rules);
    }
    if (count($label) > 0) {
        $validate->setLabels($label);
    }
    if ($scene) {
        $validate->setScene($scene);
    }
    $validate->setData($data);
    $validate->validate();
    if ($validate->isFail()) {
        return $validate->firstError();
    }
    return $validate->getSafeData();
}